/**   
* @Title: HanLpKwordUtil.java 
* @Package com.gj.common.utils.util 
* @Description: TODO(用一句话描述该文件做什么) 
* @author jacking  
* @date 2017年12月27日 下午5:14:43 
* @version V1.0   
*/
package com.txby.common.utils.util;

import java.util.ArrayList;
import java.util.List;

import com.hankcs.hanlp.seg.Segment;
import com.hankcs.hanlp.seg.Dijkstra.DijkstraSegment;
import com.hankcs.hanlp.seg.NShort.NShortSegment;
import com.hankcs.hanlp.tokenizer.IndexTokenizer;
import com.hankcs.hanlp.tokenizer.NLPTokenizer;
import com.hankcs.hanlp.tokenizer.SpeedTokenizer;
import com.hankcs.hanlp.tokenizer.StandardTokenizer;

/** 
 * 
 *    map.put("标准分词", standard(text));
	    map.put("NLP分词", nlp(text));
	    map.put("索引分词", index(text));
	    map.put("N-最短路径分词", nShort(text));
	    map.put("最短路径分词", shortest(text));
	    map.put("极速词典分词", speed(text));
* @ClassName: HanLpKwordUtil 
* @Description: TODO(这里用一句话描述这个类的作用) 
* @author jacking
* @date 2017年12月27日 下午5:14:43 
*  
*/
public class KwordsUtil {
	private static final Segment N_SHORT_SEGMENT = new NShortSegment().enableCustomDictionary(false).enablePlaceRecognize(true).enableOrganizationRecognize(true);
	private static final Segment DIJKSTRA_SEGMENT = new DijkstraSegment().enableCustomDictionary(false).enablePlaceRecognize(true).enableOrganizationRecognize(true);
	/**
	* @Title: 索引分词 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param @param text
	* @param @return    设定文件 
	* @return List<String>    返回类型 
	* @throws
	 */
	public static List<String> index(String text) {
		List<String> l = new ArrayList<>();
		IndexTokenizer.segment(text).forEach(term -> l.add(term.word));
		return l;
	}
	/**
	* @Title: 标准分词 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param @param text
	* @param @return    设定文件 
	* @return List<String>    返回类型 
	* @throws
	 */
	private static List<String> standard(String text) {
		List<String> l = new ArrayList<>();
	    StandardTokenizer.segment(text).forEach(term -> l.add(term.word));
		return l;
	}
	/**
	 * NLP分词
	* @Title: nlp 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param @param text
	* @param @return    设定文件 
	* @return String    返回类型 
	* @throws
	 */
	private static List<String> nlp(String text) {
		List<String> l = new ArrayList<>();
	    NLPTokenizer.segment(text).forEach(term -> l.add(term.word));
	    return l;
	}
 /**
  * 极速词典分词
 * @Title: speed 
 * @Description: TODO(这里用一句话描述这个方法的作用) 
 * @param @param text
 * @param @return    设定文件 
 * @return List<String>    返回类型 
 * @throws
  */
	private static List<String> speed(String text) {
		List<String> l = new ArrayList<>();
	    SpeedTokenizer.segment(text).forEach(term -> l.add(term.word));
	    return l;
	}
	/**
	 * N-最短路径分词
	* @Title: nShort 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param @param text
	* @param @return    设定文件 
	* @return List<String>    返回类型 
	* @throws
	 */
	private static List<String> nShort(String text) {
		List<String> l = new ArrayList<>();
	    N_SHORT_SEGMENT.seg(text).forEach(term -> l.add(term.word));
	    return l;
	}
	/**
	 * 最短路径分词
	* @Title: shortest 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param @param text
	* @param @return    设定文件 
	* @return List<String>    返回类型 
	* @throws
	 */
	private static List<String> shortest(String text) {
		List<String> l = new ArrayList<>();
	    DIJKSTRA_SEGMENT.seg(text).forEach(term -> l.add(term.word));
	    return l;
	}

}
